#include <vector>

namespace clp {

    template<typename T>
    struct var {
        int id;
        T val;
        bool val_known = false;
    };

    template<typename T, typename Operand = void>
    struct op {
        var<T> &variable;
        Operand operand;
        enum class operations : short int { EQ, NEQ, GT, GTE, LT, LTE, NEG } op;
    };

    template<typename T>
    struct sums : std::vector<var<T>&> {
    };

}
